This invention relates to Universal-Serial-Bus (USB) hubs, and more particularly to a USB switch that aggregates endpoints into a single virtual endpoint.
Universal-Serial-Bus (USB) has become a popular standard interface for connecting peripherals to a host such as a personal computer (PC). USB flash-memory drives and devices have been developed to transport data from one host to another, replacing floppy disks. While large external flash drives may be used, smaller USB flash drives known as key-chain or key drives have been a rapidly growing market.
USB hubs allow one USB port on a host to fan out to multiple end USB devices or endpoints. A basic USB hub has a repeater that repeats data from the host to all downstream devices, while more intelligent hubs based on the USB 2.0 standard can buffer data to different downstream ports. This is especially useful when both faster and slower endpoint USB devices are connected to the same hub, since the slower hub's transaction can be buffered by the hub to allow a simultaneous transaction to the higher speed device. Software on the host can schedule transactions to different speed devices using split transaction commands to high-speed hubs. However, split transactions are not useful when all devices are already operating at the highest speed allowed by USB 2.0.
Whether transactions are buffered or not, all endpoint USB devices are visible to the host. The host can query each endpoint USB device for its status and can transfer data to or from each endpoint device. This is necessary when different kinds of endpoint devices are attached to a hub, such as a printer and a disk drive.
FIG. 1 shows a prior-art USB hub that connects to multiple flash-memory USB endpoint devices. Host 10 includes USB host controller 12 that generates transactions to USB devices over USB bus 18 using the USB protocol. USB hub 20 is connected to a cable containing USB bus 18. USB hub 20 fans out USB bus 18 to several downstream USB devices that connect over additional USB bus segments.
Three USB flash-memory systems 14, 15, 16 are connected to USB hub 20 by USB bus segments. USB flash-memory system 14 can be accessed by USB host controller 12 through USB hub 20 and appears to the user as drive E:, when host 10 is a PC that has a hard drive C: and an optical drive D: already installed. Since USB hub 20 passes all host transfers through to downstream devices, USB flash-memory system 15 is visible to host 10 as a second flash drive and is designated as drive F:, while USB flash-memory system 16 is visible to the host as a third flash drive designated as G: to the user.
As additional devices are added to host 10, either through USB hub 20 or through another interface, drives letters in ascending order are assigned to each new memory device. When many USB flash-memory systems such as flash cards are attached, the drive letters can reach the end of the alphabet, and even before then the user is presented with many drives to keep track of and to choose from when storing or transferring data. This can be confusing and annoying to the user in much the same way that partitioned disk drives having multiple drive letters were.
What is desired is to aggregate multiple USB flash-memory systems together. It is desired to have all USB flash-memory systems appear as a single virtual USB endpoint so that the PC user sees the aggregated flash drives as a single drive letter. An intelligent USB hub that can act as a USB switch and aggregate multiple endpoints as a single USB for the host is desirable.